﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace GestorDeFlotasDesktop.AbmRol
{
    public partial class ModificacionRol : Form
    {
        public ModificacionRol()
        {
            InitializeComponent();
        }

        public void EsconderBotonHabilitar()
        {
            buttonHabilitar.Visible = false;
        }

        private void ModificacionRol_Load(object sender, EventArgs e)
        {
            sqlManager.Conectar();
            DataTable FuncionalidadesRol = sqlManager.ObtenerFuncionalidadesRol(Convert.ToInt32(textBoxIDRol.Text));
            sqlManager.Desconectar();
            foreach (DataRow fila in FuncionalidadesRol.Rows)
            {
                listaFuncionalidad.SetItemCheckState(Convert.ToInt32(fila["ID Funcionalidad"])-1, CheckState.Checked);
            }
        }

        private void btnSalir_Click(object sender, EventArgs e)
        {
            this.Close();
        }

        public void CargarDatos(ListadoRol.rol datoRol)
        {
            textBoxIDRol.Text = Convert.ToString(datoRol.id_rol);
            textBoxNombre.Text = datoRol.descripcion;
            return;
        }

        private bool esChecked(int indice)
        {
            for (int i = 0; i <= listaFuncionalidad.CheckedIndices.Count - 1; i++)
            {
                if (indice == listaFuncionalidad.CheckedIndices[i])
                    return false;
            }
            return true;
        }

        private void btnGuardar_Click(object sender, EventArgs e)
        {
            sqlManager.Conectar();
            int resultado = sqlManager.ModificarRol(Convert.ToInt32(textBoxIDRol.Text), textBoxNombre.Text);
            if (resultado == 0)
            {
                MessageBox.Show("Nombre de rol ya existente eliga otro", "Log", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
            }
            else
            {
                for (int i = 0; i <= listaFuncionalidad.Items.Count - 1; i++)
                {
                    if (esChecked(i))
                        sqlManager.SacarRolFuncionalidad(Convert.ToInt32(textBoxIDRol.Text), i + 1);
                    else
                        sqlManager.AsignarRolFuncionalidad(Convert.ToInt32(textBoxIDRol.Text), i+1);
                }
                MessageBox.Show("Se pudo Modificar correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
            sqlManager.Desconectar();
        }

        private void buttonHabilitar_Click(object sender, EventArgs e)
        {
            if (textBoxIDRol.Text != string.Empty)
            {
                sqlManager.Conectar();
                int result = sqlManager.HabilitarRol(textBoxIDRol.Text);
                sqlManager.Desconectar();

                if (result != 1)
                {
                    MessageBox.Show("No se pudo habilitar", "Log", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                }
                else
                {
                    MessageBox.Show("Se habilito correctamente", "Log", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    buttonHabilitar.Visible = false;
                }
            }
        }
    }
}
